<template>
    <!-- 
    <b-modal ref="my-modal" hide-footer title="Using Component Methods">
     <div class="d-block text-center">
       <h3>Hello From My Modal!</h3>
     </div>
     <b-button class="mt-3" variant="outline-danger" block @click="hideModal">Close Me</b-button>
     <b-button class="mt-2" variant="outline-warning" block @click="toggleModal">Toggle Me</b-button>
   </b-modal> 
    -->
    <!--
        body-class="modalStyle" 表示样式
        size="lg" 表示模态窗口大小 xl,lg,sm,full
        hide-footer 表示隐藏底部按钮
        hide-header 表示隐藏头部内容
        no-close-on-backdrop 表示鼠标点击背景不可关闭
        hide-header-close 表示隐藏头部关闭按钮
        centered 居中
        ok-title=“确定” 
        cancel-title=取消
        @ok="handleOk" 
        @cancel="handleCancel"
        scrollable 滚动条
        hide-backdrop 隐藏背景
        wrapClassName="ant-modal-cust-warp" 
        style="top:5%;height: 85%;overflow-y: hidden" 样式
    -->
    <b-modal ref="my-modal" size="xl" title="分配管理员" scrollable hide-footer no-close-on-backdrop>
        <div class="d-block text-center">
            <div class="m-form m-form--fit m-form--label-align-left m-form--group-seperator-dashed">
                <div class="form-group m-form__group row">
                    <label class="col-form-label">级别</label>
                    <div class="col-lg-2">
                        <el-select maxlength="20" v-model="level" placeholder="请选择">
                            <el-option
                                v-for="item in [{value:'',label:'请选择'},{value:'2',label:'子系统管理员'},{value:'1',label:'全平台管理员'}]"
                                :key="item.value"
                                :label="item.label"
                                :value="item.value">
                            </el-option>
                        </el-select>
                    </div>        
                    <button class="btn btn-light-primary m-btn m-btn--custom m-btn--icon" @click="doAddAdmin">
                        <span><i class="fas fa-save"></i><span>保 存</span></span>
                    </button>     
                </div>
            </div>
            <div class="card card-custom gutter-b example example-compact" id="tableAccountBody">      
                <div class="card-header">
                    <div class="card-title">
                        <span class="card-icon">              
                        <i class="text-dark-50 flaticon-search-magnifier-interface-symbol"></i>
                        </span>
                        <h3 class="card-label"> 查询区域 </h3>
                    </div>
                    <div class="card-toolbar">
                        <div class="example-tools justify-content-center">
                        <!-- 
                            <span data-toggle="tooltip" class="example-toggle"></span>
                            <span data-toggle="tooltip" class="example-copy"></span> 
                        -->
                        </div>
                    </div>
                </div>      
                <div class="card-body">
                     <!--查询条件-->
                    <div class="m-form m-form--fit m-form--label-align-left m-form--group-seperator-dashed">
                    <div class="m-portlet__body">	
                        <div class="form-group m-form__group row">
                            <label class="col-form-label">姓名</label>
                            <div class="col-lg-1">
                                <input type="text" class="form-control" v-model="searchForm.name" placeholder="请输入">
                            </div>
                            <label class="col-form-label">账号</label>
                            <div class="col-lg-1">
                                <input type="text" class="form-control" v-model="searchForm.account" placeholder="请输入">
                            </div>
                            <label class="col-form-label">状态</label>
                            <div class="col-lg-2">
                                <el-select maxlength="20" v-model="searchForm.status" placeholder="请选择">
                                    <el-option value="">请选择</el-option>
                                    <el-option
                                        v-for="item in [{value:'0',label:'正常'},{value:'1',label:'冻结'},{value:'2',label:'禁用'}]"
                                        :key="item.value"
                                        :label="item.label"
                                        :value="item.value">
                                    </el-option>
                                </el-select>
                            </div>
                            
                            <label class="col-form-label">类型</label>
                            <div class="col-lg-2">
                            <input type="hidden" class="form-control" name="searchForm.accountTypeId" placeholder="请输入">
                            <el-select v-model="searchForm.accountTypeIdTemp" multiple placeholder="请选择">
                                <el-option
                                v-for="item in typeList"
                                :key="item.id"
                                :label="item.name"
                                :value="item.id">
                                </el-option>
                            </el-select>
                            </div>
                            <label class="col-form-label">类型条件</label>
                            <div class="col-lg-1">
                                <el-select maxlength="20" v-model="searchForm.typeCondition" placeholder="请选择">
                                    <el-option value="">请选择</el-option>
                                    <el-option
                                        v-for="item in [{value:'0',label:'并且'},{value:'1',label:'或'}]"
                                        :key="item.value"
                                        :label="item.label"
                                        :value="item.value">
                                    </el-option>
                                </el-select>
                            </div>
                        </div>
                        <div class="form-group m-form__group row">                  
                            <label class="col-form-label">邮箱</label>
                            <div class="col-lg-2">
                                <input type="text" class="form-control" v-model="searchForm.email" placeholder="请输入">
                            </div>
                            <b-button :pressed="false" variant="btn btn-primary font-weight-bold mr-2" @click="search()"><span><i class="fa fa-search"></i><span>查询</span></span></b-button>
                            <b-button :pressed="false" variant="btn btn-light font-weight-bold mr-2"  @click="resetAll()"> <span><span>清空条件</span></span></b-button>
                        </div>
                    </div> 
                    <div class="m-portlet__foot m-portlet__no-border m-portlet__foot--fit">
                        <div class="m-form__actions m-form__actions--solid">
                            <div class="row">
                                <div class="col m--align-left">
                                
                                </div>
                                <div class="col m--align-right">
                                
                                </div>
                            </div>
                        </div>
                    </div>             
                    </div>
                </div>   
                <!--分页组件-->
                <el-table 
                style="width: 100%" 
                ref="multipleTable" 
                stripe border 
                @select="select" 
                @selection-change="handleSelectionChange" 
                highlight-current-row 
                :header-cell-class-name="cellClass"
                :data="accountList" >
                <!-- 复选框 -->
                <el-table-column type="selection" width="40"></el-table-column>
                <el-table-column label="序号" width="80">
                    <template slot-scope="scope">
                    {{scope.$index+1}} 
                    </template>
                </el-table-column>
                <el-table-column align="left" prop="account" label="账号"></el-table-column>   
                <el-table-column align="left" prop="name" label="姓名"></el-table-column>  
                <el-table-column align="center" :formatter="formatterTypes" show-overflow-tooltip prop="oauthAccountTypes"  label="类型" min-width="200"></el-table-column>
                <el-table-column align="left" prop="email" label="邮箱"></el-table-column>            
                </el-table>
                <div class="block">
                <el-pagination
                    hide-on-single-page   
                    @size-change="handleSizeChange"        
                    @current-change="handleCurrentChange"  
                    :current-page="pageNo"                
                    :page-sizes="[5, 10, 30, 50]"          
                    :page-size="pageSize"			  
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="totalCount">		
                </el-pagination>
                </div>
            </div>
        </div>
        <template slot="modal-footer">
            <!--自定义按钮-->
        </template>
     </b-modal>
</template>  

<style scoped>
.card.card-custom {
box-shadow: 0px 0px 30px 0px #fff !important;
}
</style>
<script>
import Swal from "sweetalert2";
import apiUtil from "@/core/util/apiUtil.js";
import { handleNotify, handleAlert, handleConfirm, showWating, closeWating } from "@/core/util/jehcUtil.js";
export default {
    data() {
        return {
            searchForm: { accountTypeIdTemp: "", accountTypeId: "", name: "", account: "", typeCondition: "", status: "", email: "" },
            typeList: [],
            accountList: [],
            level: "",
            sysModeId: "",
            bill_id:"",
            sels: [], //当前选框选中的值
            pageNo: 1,      // 默认当前是第一页
            pageSize: 5,    // 当前每页的数据是5条
            totalCount: 0   // 总数默认为0
        }
    },
    watch: {
        "searchForm.accountTypeIdTemp": {//监听字段变化
            handler: function (newVal, old) {
                if (newVal) {
                    this.searchForm.accountTypeId = newVal.join(",");
                }
            }
        },
    },
    components: {
    },
    mounted() {
    },
    methods: {
        cellClass(row) {//屏蔽table中全选按钮
            if (row.columnIndex === 0) {
                return 'disabledCheck';
            }
        },
        showModal(id) {
            this.$refs['my-modal'].show();
            this.initList();   // 按当前的页号和每页的数据量进行查询
            this.initTypeList();
            this.initList(id);   // 按当前的页号和每页的数据量进行查询
            this.sysModeId = id;
            this.sels = [];
        },
        hideModal() {
            this.$refs['my-modal'].hide()
        },
        toggleModal() {
            // 当模态已隐藏时，我们传递要返回焦点的按钮的ID
            this.$refs['my-modal'].toggle('#toggle-btn')
        },
        initList(id) {
            showWating({ renderBody: "tableUserRoleBody" });
            var params = {};
            params.usePageNo = true;//采用第几页进行分页（兼容）
            params.pageSize = this.pageSize;//页面显示记录条数，在页面显示每页显示多少项的时候
            params.pageNo = this.pageNo;//开始的记录序号   
            params.searchJson = JSON.stringify(this.searchForm);//为form元素     
            apiUtil.queryPage(process.env.VUE_APP_OAUTH_API + "/oauthAccount/list", params).then(({ data }) => {
                this.accountList = data.data;//给结果集赋值
                this.totalCount = data.total;// 获取当前数据的总数    
            });
        },
        handleSelectionChange(sels) {//获取选中的值
            this.sels = sels;
        },
        select(selection, row) {//实现单项选择
            this.bill_id = row.id;
            // 清除 所有勾选项
            this.$refs.multipleTable.clearSelection()
            // 当表格数据都没有被勾选的时候 就返回
            // 主要用于将当前勾选的表格状态清除
            if (selection.length == 0) return
            this.$refs.multipleTable.toggleRowSelection(row, true);
        },
        handleSizeChange(val) { // 修改每页所存数据量的值所触发的函数
            this.pageSize = val;  // 修改页的大小
            this.initList();       // 按新的pageNo和pageSize进行查询
        },
        handleCurrentChange(val) { // 修改当前页所触发的函数
            this.pageNo = val;       // 更新当前的页
            this.initList();          // 按新的pageNo和pageSize进行查询
        },
        search() {
            this.pageNo = 1;       // 更新当前的页
            this.initList();          // 按新的pageNo和pageSize进行查询
        },
        resetAll() {
            Object.assign(this.$data.searchForm, this.$options.data().searchForm);
            this.search();
        },
        initTypeList() {
            let params = {};
            apiUtil.query(process.env.VUE_APP_OAUTH_API + "/oauthAccountType/listAll", params).then(({ data }) => {
                this.typeList = data.data;
            });
        },
        formatterTypes(row, column) {
            let oauthAccountTypes = row.oauthAccountTypes;
            let accountTypeText = null;
            if (null != oauthAccountTypes) {
                for (var i = 0; i < oauthAccountTypes.length; i++) {
                    if (null == accountTypeText) {
                        accountTypeText = oauthAccountTypes[i].name;
                    } else {
                        accountTypeText = accountTypeText + "," + oauthAccountTypes[i].name;
                    }
                }
            }
            return accountTypeText;
        },
        doAddAdmin() {
            if (this.sels.length === 0) {
                handleAlert("请选择要设置的数据", "warning", 3)
                return;
            }
            if (this.sels.length >1 ) {
                handleAlert("只能选择一条记录", "warning", 3)
                return;
            }
            if (this.level === "") {
                handleAlert("请选择级别", "warning", 3)
                return;
            }

            this.$confirm("确认设置所选记录吗?", "提示", { type: "warning", }).then(() => {
                let ids = this.sels.map((item) => item.id);
                // 根据后台想要的参数格式选择
                // console.log(ids.join(",")); //1,2,3,4
                // console.log(ids); //[1,2,3,4]
                let params = { accountId: ids.join(","), level: this.level, sysModeId: this.sysModeId };
                apiUtil.post(process.env.VUE_APP_OAUTH_API + "/oauthAdmin/add", params).then(data => {
                    if (data.data.success) {
                        handleAlert("设置成功", "success", 3);
                        this.search();
                    } else {
                        handleAlert("设置失败", "error", 3);
                    }
                });
            }).catch(() => { });//注意这里，这里是重点！！！; 
        },
    }
};
</script>